//这个模块里面封装了所有对数据库操作的常用操作

//不管数据库什么操作，都是先链接数据库，先把链接数据库封装成函数
var mongod = require('mongodb')
var MongoClient = require('mongodb').MongoClient;
var setting = require('../peizhi');


function _connectDB(callback) {
    var url = setting.dburl;
    MongoClient.connect(url, function (err, db) {
        if (err) {
            callback(err, null);
            db.close();
            return;
        }
        callback(err, db);
        db.close();
    })
}
//插入数据
exports.insertOne = function (collectionName, json, callback) {
    _connectDB(function (err, db) {
        db.collection(collectionName).insertOne(json, function (err, result) {     //插入之后要做的事情 result表示插入结果
            callback(err, result);
            db.close();             //关闭数据库
        })

    })
}
//查询数据，找到
exports.find = function (collectionName, json, c, d) {
    if (arguments.length == 3) {
        var callback = c         //如果传了3参数那么C就是回调函数 
        var skipnumber = 0;   //跳过条数
        var limit = 0;

    } else if (arguments.length == 4) {
        var callback = d         //如果传了4个那么d就是回调函数
        var args = c;
        var skipnumber = args.pageamount * args.page || 0;   //跳过条数
        var limit = args.pageamount || 0
        var sort = args.sort || {}          //排序方式
    } else {
        throw new Error('find函数的参数个数子能3个或者4个')
    }

    _connectDB(function (err, db) { //查询所有内容

        var cursor = db.collection(collectionName).find(json).skip(skipnumber).limit(limit).sort(sort);
        var count = db.collection(collectionName).count


        var data = [];
        console.log(cursor.length)
        cursor.each(function (err, doc) {


            if (doc != null) {
                if (err) {
                    callback(err, null);
                    db.close();
                    return;
                }
                data.push(doc);
            } else {    //没有更多的数据了把内容传回去
                callback(null, data);
                db.close();
            }

        })

    })
}
//删除
exports.delete = function (collectionName, json, callback) {
    _connectDB(function (err, db) {
        db.collection(collectionName).deleteMany(json, function (err, result) {     //插入之后要做的事情 result表示插入结果
            callback(err, result);
            db.close();             //关闭数据库
        })

    })
}
exports.updata = function (collectionName, json1, json2, callback) {
    _connectDB(function (err, db) {

        db.collection(collectionName).updateMany(
            json1,
            json2,
            function (err, result) {
                callback(err, result);
                db.close();
            }
        )

    })
}
//得到文件总数
exports.getAllCount = function (collectionName,json1, callback) {
    if(arguments.length==2){                   //判断如果是两个参宿那么久改变变量位置
        var callback=json1
        var count={}
        console.log('两个参数')
    }else if(arguments.length==3){
        var count=json1
         console.log('三个参数')
    }
    _connectDB(function (err, db) {
     
      db.collection(collectionName).count(count).then(function(count){
            callback(count)
            db.close();
      })

    })
}
// init()  
// function init(){                                        //数据库初始化，包括索引什么的
//     _connectDB(function(err,db){
//             if(err){
//                 console.log(err)
//                 return ;
//             }
//             db.collection('索引表').createIndex({age:1},null,function(err,results){
//                     console.log('索引建立成功')
//             })


//     })
// }
